<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>03_组合继承</title>
</head>
<body>
<!--
方式3: 原型链+借用构造函数的组合继承
1. 利用原型链实现对父类型对象的方法继承
2. 利用super()借用父类型构建函数初始化相同属性
-->
<script type="text/javascript">

  function Person(name, age) {
    this.name = name;
    this.age = age;
  }

  Person.prototype.showName = function () {
    console.log(this.name);
  }
  var person1 = new Person('kobe', 43);

  // 子类的原型 成为 父类的实例
  Child.prototype = new Person();
  // 构造器属性丢了，人为添加回来
  Child.prototype.constructor = Child;
  function Child(name, age, sex) {
    // this.name = name;
    // this.age = age;
    // 借用Person中的代码
    // Person(name, age); // this ---> window
    // 思考： this应该是 Child的实例对象
    // 难点： Child的实例对象 = this;
    // var this = Child的实例对象
    Person.call(this, name, age);
    this.sex = sex;
  }

  var child2 = new Child('xiaoming', 18, '男');
</script>
</body>
</html>